package
{
	import flash.display.MovieClip;
	import flash.errors.IllegalOperationError;
	import flash.geom.Point;

	public class CursorTool extends MovieClip
	{
		protected var _halt:Boolean = false;
		
		/** You cannot instantiate directly, must be from subclass */
		public function CursorTool(self:CursorTool)
		{
			if(self != this)
			{
				//only a subclass can pass a valid reference to self
				throw new IllegalOperationError("Abstract class did not receive reference to self. MyAbstractType cannot be instantiated directly.");
			}
		}
		
		public function selectComponent(c:MovieClip):void{}
		public function clearComponent(c:MovieClip):void{}
		public function get components():Array{return null;}
		public function get outOfBounds():Boolean{return false;}
		public function process(point:Point):void{}
		public function get halted():Boolean{return _halt;}
		public function set halt(b:Boolean):void{_halt = b;}
	}
}